package cc.shacocloud.redis.study.util.redis;

import org.jetbrains.annotations.NotNull;
import redis.clients.jedis.util.SafeEncoder;

/**
 * redis 参数格式化工具
 */
public class RedisParamsFormatUtil {

    /**
     * 参数格式化
     *
     * @param params 参数
     * @return 参数
     */
    @NotNull
    public static byte[][] paramsFormat(@NotNull Object... params) {
        // 参数类型判断
        int length = params.length;
        byte[][] many = new byte[length][];
        for (int i = 0; i < length; i++) {
            Object param = params[i];
            many[i] = paramFormat(param);
        }
        return many;
    }

    /**
     * 参数格式化
     *
     * @param param 参数
     * @return 参数
     */
    @NotNull
    public static byte[] paramFormat(@NotNull Object param) {
        // 参数类型判断
        byte[] data;
        if (param instanceof String) {
            data = SafeEncoder.encode((String) param);
        } else if (param instanceof byte[]) {
            data = (byte[]) param;
        } else {
            throw new JedisUnsupportedDataTypeException(
                    "不支持的参数数据类型：" + param.getClass() + "; 参考类型为：String 或 byte[]!"
            );
        }
        return data;
    }

}
